package com.mtnz.njk.config;

import org.springframework.web.bind.annotation.RequestMapping;
/**
* @Description:
* @Author:         ZPX
* @CreateDate:     2019/8/12 18:01
* @Version:        1.0
 * 1. FeignClient必须是一个接口interface
 *  * 2. 必须加上@FeignClient指定需要调用哪个服务的接口
 *  * 3. Feign默认集成了Ribbon，所以通过Feign也可以实现服务的负载均衡调用(轮询方式)。
 *  *
 *  * Feign的实现的过程大致如下：
 *     a. 首先通过@EnableFeignClients注解开启FeignClient
 *     b. 根据Feign的规则实现接口，并加@FeignClient注解
 *     c. 程序启动后，会进行包扫描，扫描所有的@ FeignClient的注解的类，并将这些信息注入到ioc容器中。
 *     d. 当接口的方法被调用，通过jdk的代理，来生成具体的RequestTemplate
 *     e. RequestTemplate在生成Request
 *     f. Request交给Client去处理，其中Client可以是HttpUrlConnection、HttpClient也可以是Okhttp
 *     g. 最后Client被封装到LoadBalanceClient类，这个类结合类Ribbon做到了负载均衡
*/
// @FeignClient(value = "eureka-client")
public interface FeignClients {
    /**
     * 编写Feign接口简便的方法：把具体需要远程调用的服务（如服务B）中的方法复制过来，去掉实现即可。
     *
     * @return
     */
    @RequestMapping("/homeBanner")
    String homeBanner() throws Exception;
}
